package com.mes.basicdata.domain;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.BatchSize;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.JoinColumnOrFormula;
import org.hibernate.annotations.JoinColumnsOrFormulas;
import org.hibernate.annotations.JoinFormula;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.springframework.context.annotation.Lazy;

import com.mes.common.domain.BasicModel;

/**
 * <p>
 * 
 * </p>
 * 
 * <p>
 * Created on 2017-03-16
 * </p>
 * 
 * @author lcs
 * 
 */
@Entity()
@Table(name = "B_PART_NUMBER")
@BatchSize(size=20)
@Lazy(value=true)
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Part extends BasicModel implements java.io.Serializable
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public Part()
	{
		super();
	}
	
	/**
	 * 物料唯一号
	 */
	@Id
	@GenericGenerator(name = "partUid", strategy = "assigned")
	@Column(name="PART_NUMBER")
	private String partUid;
	
	@Override
	public String getUuid() {
		// TODO Auto-generated method stub
		return this.getPartUid();
	}

	@Override
	public void setUuid(String uuid) {
		// TODO Auto-generated method stub
		this.setPartUid(uuid);
	}
	
	
	// 图号
	@Column(name="drawingId",length=50)
	private String drawingId;
	
	// 版本号
	@Column(name="versionId",length=50)
	private String versionId;
	
	// 零件名称
	@Column(name="PART_NAME")
	private String partName;
	
	// 物料描述
	@Column(name="PART_DESCRIPTION")
	private String description;
	
	// 技术条件
	@Column(name="TECH_CONDITION",length=50)
	private String techCondition;
	
	// 牌号
	@Column(name="PARTSTYLE",length=100)
	private String partStyle;
	
	// 供应装态，过渡字段
	@Column(name="SUPPLYSTATE")
	private String supplyState;
	
	// 下料尺寸，过渡字段
	@Column(name="DRAGSIZE")
	private String dragSize;
	
	// 计量单位
	@Column(name="UOM",length=50)
	private String uom;

//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="UOM",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'uom'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData uomDesc;
	
	// 编码
	@Column(name="BARCODE",length=50)
	private String barCode;
	
	// 物料分类
	@Column(name="PART_NUMBER_TYPE",length=50)
	private String partType;
//	@ForeignKey(name="null")
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumnsOrFormulas(value={
			@JoinColumnOrFormula(column=@JoinColumn(name="PART_NUMBER_TYPE",referencedColumnName="CLASSID",nullable=true,insertable=false,updatable=false)),
			@JoinColumnOrFormula(formula=@JoinFormula(value="'Sort1'", referencedColumnName="SORTID"))
	})
	@NotFound(action=NotFoundAction.IGNORE)
	private ClassInformation partTypeClass;
	
//	@Transient
//	private ClassInformation partTypeClass;
//	// 物料分类
//	@Formula("(select bc.classname from b_classinfo bc where bc.classid=part_number_type and bc.sortid = 'Sort1')")
//	private String className;
	
	
	// 型号分类，model==产品
	@Column(name="PART_SORT2",length=50)
	private String modelClassUid;
	@Transient
	private ClassInformation modelClass;
	// 过渡字段,
	@Transient
	private String modelClassId;
	
	
	// 主制部门
	@Column(name="PRODUCT_DEPT")
	private String productDeptUid;
	
	@ForeignKey(name="null")
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="PRODUCT_DEPT",insertable=false,updatable=false)
	private Dept productDept;
	
	
	// 是否关键件
	@Column(name="IS_CRITICAL_PART", precision=10,scale=0)
	private Boolean isCritical;
	
	// 是否重要件
	@Column(name="IS_IMPORTANT_PART" ,precision=10,scale=0)
	private Boolean isImportant;
	
	// 制造类型
	@Column(name="MANUFACTURED_TYPE",length=10)
	private String manuType;
//	@ForeignKey(name="null")
//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="MANUFACTURED_TYPE",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'itemkind'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData manuTypeDesc;
	
	
	// 批量类型
	@Column(name="PART_BATCH_TYPE")
	private String batchType;
	
//	@ForeignKey(name="null")
//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="PART_BATCH_TYPE",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'batchtype'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData batchTypeDesc;
	
	
	// 固定批量数量
	@Column(name="PART_BATCH_QUANTITY",precision=30,scale=0)
	private Float batchQty;
	
	
	// 提前期类型
	@Column(name="LEAD_TIME_TYPE",length=10)
	private String leadTimeType;
	
//	@ForeignKey(name="null")
//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="LEAD_TIME_TYPE",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'LeadTimeType'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData leadTimeTypeDesc;
	
	// 提前期
	@Column(name="LEAD_TIME")
	private Float leadTime;
	
	// MRP分解类型
	@Column(name="MRP_METHOD_TYPE")
	private String mrpMethodType;	
	
	// MRP运算部门
	@Column(name="MRP_DEPT")
	private String mrpDeptUid;
	
	@ForeignKey(name="null")
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="MRP_DEPT",insertable=false,updatable=false)
	private Dept mrpDept;

	
	// 跟踪类型
	@Column(name="PART_TRACKING_TYPE")
	private String trackType;
	
//	@ForeignKey(name="null")
//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="PART_TRACKING_TYPE",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'parttrackingtype'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData trackTypeDesc;
	
	
	// 计划级别
	@Column(name="PLANGRADE",precision=10, scale=0)
	private String planGrade;
	
//	@ForeignKey(name="null")
//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="PLANGRADE",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'plangrade'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData planGradeDesc;
	
	
	// 生产阶段，试制还是批产
	@Column(name="PRODUCT_PHASE")
	private String productPhase;
	
//	@ForeignKey(name="null")

//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="PRODUCT_PHASE",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'model_product_phase'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData productPhaseDesc;
	
	
	// 客户的习惯名称
	@Column(name="CUSTOMER_NAME")
	private String customerName;
	
	// 是否虚拟件--与分类中的虚拟件有些重复
	@Column(name="IS_PHANTOM")
	private Boolean isPhantom;
	
	// 管理成本
	@Column(name="MANAGEMENT_COST")
	private Float managementCost;
	
	// 单件成本
	@Column(name="UNIT_COST")
	private Float unitCost;
	
	// 单价
	@Column(name="UNIT_PRICE")
	private Float unitPrice;
	
	// 可销售标志
	@Column(name="SELLABLE")
	private Boolean isSellable;
	
	// 是否为库存零件
	@Column(name="STOCK_PART")
	private Boolean isStock;
	
	// 制造周期
	@Transient
	private Float ManuCycleTime;
	
	// 失效周期
	@Column(name="INVALID_TIME")
	private Float invalidTime;
	
	// 复检周期
	@Column(name="CHECKUP_TIME")
	private Float checkupTime;
	
	// 维护周期（油封周期）
	@Column(name="MAINTENANCE_TIME")
	private Float maintenanceTime;
	
	// 物料ABC分类， A,B,C
	@Column(name="PART_NUMBER_ABC_TYPE",length=10)
	private String partABC;
	
	// 订货点库存数量
	@Column(name="ORDER_POINT_STOCK_QUANTITY",precision=10,scale=0)
	private Float orderPointQty;
	
	// 安全库存数量
	@Column(name="SAFETY_STOCK_QUANTITY",precision=30,scale=6)
	private Float safetyQty;

	// 物料出入库规则，--先进先出还是
	@Column(name="IO_PRIORITY")
	private String ioRule;

//	
//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="IO_PRIORITY",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'io_priority'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData ioRuleDesc;
	
	// 是否需要客户检验
	@Column(name="NEED_CUSTOMCHECK",precision=2, scale=0)
	private Boolean needCustomerCheck;
	
	// 生产准备评审级别
	@Column(name="TOOLCHECKLEVEL", precision=2,scale=0 )
	private String prepareLevel;

//	
//	@ManyToOne(fetch=FetchType.LAZY)
//	@JoinColumnsOrFormulas(value={
//			@JoinColumnOrFormula(column=@JoinColumn(name="TOOLCHECKLEVEL",referencedColumnName="ID",nullable=true,insertable=false,updatable=false)),
//			@JoinColumnOrFormula(formula=@JoinFormula(value="'TOOLCHECKLEVEL'", referencedColumnName="TYPESNAME"))
//	})
//	@NotFound(action=NotFoundAction.IGNORE)
//	private TypesData prepareLevelDesc;
	
	// 生产准备提前期
	@Column(name="PREPARE_LEAD_TIME", precision=2,scale=0 )
	private Float prepareLeadTime;

	// 多个工艺
	@Transient
	private Set<Routing> routings = new HashSet<Routing>(0);
//	// 多个特征
//	private Set<Feature> features = new HashSet<Feature>(0);

	// 对应b_bill_of_material中的属性
	// 最小固定损耗数量
	@Transient
	private Float minFixedShrinkage;
	
	// 最小损耗率
	@Transient
	private Float minPercentShrinkage;

	// 是否系列产品
	@Transient
	private Boolean isSeries;
	
	// 产品系列唯一号
	@Column(name="SERIES_PART_UID")
	private String seriesPartUid;
	
	// 物料配置规则
	@Column(name="PART_CONFIGURATION_RULE")
	private String configRule;

//	//物料关联的非结构化文档数量
//	@Formula("(select count(*) from f_file_field fff where fff.fielduid=PART_NUMBER and fff.fieldType='PART_FILE')")
//	@Transient
//	private Integer partFileCount;

	// part_number_type的唯一号
	@Column(name="PARTNUMBER_TYPE_PDM")
	private String partClassUid;

	// 是否有效
	@Column(name="EFFECTIVE",precision=3, scale=0 )
	private Boolean isEffective;

	// 是否需要评审
	@Column(name="IS_NEED_JUDGE")
	private Boolean isNeedJudge;

	// 是否需要预约
	@Column(name="IS_NEED_DATA")
	private Boolean isNeedData;

	// 是否需要分拣
	@Column(name="IS_NEED_SORT")
	private Boolean isNeedSort;
	
	//过程卡型号
	@Column(name="DEMAND_PART_NUMBER")
	private String demandPartNumber;
	
	//单台数量
	@Column(name="UNIT_SPACE")
	private Float unitSpace;
	
	//预计合格率
	@Column(name="MANUFACTURED_EXPECTATION")
	private Float manufacturedExpectation;
	
	//盘点周期
	@Column(name="CHECK_TIME")
	private Float checkTime;
	
	
	public String getDemandPartNumber() {
		return demandPartNumber;
	}

	public void setDemandPartNumber(String demandPartNumber) {
		this.demandPartNumber = demandPartNumber;
	}

	public Float getUnitSpace() {
		return unitSpace;
	}

	public void setUnitSpace(Float unitSpace) {
		this.unitSpace = unitSpace;
	}

	public Float getManufacturedExpectation() {
		return manufacturedExpectation;
	}

	public void setManufacturedExpectation(Float manufacturedExpectation) {
		this.manufacturedExpectation = manufacturedExpectation;
	}

	public Float getCheckTime() {
		return checkTime;
	}

	public void setCheckTime(Float checkTime) {
		this.checkTime = checkTime;
	}

	public String getPartUid() {
		return partUid;
	}

	public void setPartUid(String partUid) {
		this.partUid = partUid;
	}

	public String getDrawingId() {
		return drawingId;
	}

	public void setDrawingId(String drawingId) {
		this.drawingId = drawingId;
	}

	public String getVersionId() {
		return versionId;
	}

	public void setVersionId(String versionId) {
		this.versionId = versionId;
	}

	public String getPartName() {
		return partName;
	}

	public void setPartName(String partName) {
		this.partName = partName;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getTechCondition() {
		return techCondition;
	}

	public void setTechCondition(String techCondition) {
		this.techCondition = techCondition;
	}

	public String getPartStyle() {
		return partStyle;
	}

	public void setPartStyle(String partStyle) {
		this.partStyle = partStyle;
	}

	public String getSupplyState() {
		return supplyState;
	}

	public void setSupplyState(String supplyState) {
		this.supplyState = supplyState;
	}

	public String getDragSize() {
		return dragSize;
	}

	public void setDragSize(String dragSize) {
		this.dragSize = dragSize;
	}

	public String getUom() {
		return uom;
	}

	public void setUom(String uom) {
		this.uom = uom;
	}

	public String getBarCode() {
		return barCode;
	}

	public void setBarCode(String barCode) {
		this.barCode = barCode;
	}

	public String getPartType() {
		return partType;
	}

	public void setPartType(String partType) {
		this.partType = partType;
	}

	public ClassInformation getPartTypeClass() {
		return partTypeClass;
	}

	public void setPartTypeClass(ClassInformation partTypeClass) {
		this.partTypeClass = partTypeClass;
	}

	/*public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}*/

	public String getModelClassUid() {
		return modelClassUid;
	}

	public void setModelClassUid(String modelClassUid) {
		this.modelClassUid = modelClassUid;
	}

	public ClassInformation getModelClass() {
		return modelClass;
	}

	public void setModelClass(ClassInformation modelClass) {
		this.modelClass = modelClass;
	}

	public String getModelClassId() {
		return modelClassId;
	}

	public void setModelClassId(String modelClassId) {
		this.modelClassId = modelClassId;
	}

	public String getProductDeptUid() {
		return productDeptUid;
	}

	public void setProductDeptUid(String productDeptUid) {
		this.productDeptUid = productDeptUid;
	}

	public Dept getProductDept() {
		return productDept;
	}

	public void setProductDept(Dept productDept) {
		this.productDept = productDept;
	}

	public Boolean getIsCritical() {
		return isCritical;
	}

	public void setIsCritical(Boolean isCritical) {
		this.isCritical = isCritical;
	}

	public Boolean getIsImportant() {
		return isImportant;
	}

	public void setIsImportant(Boolean isImportant) {
		this.isImportant = isImportant;
	}

	public String getManuType() {
		return manuType;
	}

	public void setManuType(String manuType) {
		this.manuType = manuType;
	}


//	public TypesData getManuTypeDesc() {
//		return manuTypeDesc;
//	}
//
//	public void setManuTypeDesc(TypesData manuTypeDesc) {
//		this.manuTypeDesc = manuTypeDesc;
//	}

	public String getBatchType() {
		return batchType;
	}

	public void setBatchType(String batchType) {
		this.batchType = batchType;
	}


//	public TypesData getBatchTypeDesc() {
//		return batchTypeDesc;
//	}
//
//	public void setBatchTypeDesc(TypesData batchTypeDesc) {
//		this.batchTypeDesc = batchTypeDesc;
//	}

	public Float getBatchQty() {
		return batchQty;
	}

	public void setBatchQty(Float batchQty) {
		this.batchQty = batchQty;
	}

	public String getLeadTimeType() {
		return leadTimeType;
	}

	public void setLeadTimeType(String leadTimeType) {
		this.leadTimeType = leadTimeType;
	}


//	public TypesData getLeadTimeTypeDesc() {
//		return leadTimeTypeDesc;
//	}
//
//	public void setLeadTimeTypeDesc(TypesData leadTimeTypeDesc) {
//		this.leadTimeTypeDesc = leadTimeTypeDesc;
//	}

	public Float getLeadTime() {
		return leadTime;
	}

	public void setLeadTime(Float leadTime) {
		this.leadTime = leadTime;
	}

	public String getMrpMethodType() {
		return mrpMethodType;
	}

	public void setMrpMethodType(String mrpMethodType) {
		this.mrpMethodType = mrpMethodType;
	}

	public String getMrpDeptUid() {
		return mrpDeptUid;
	}

	public void setMrpDeptUid(String mrpDeptUid) {
		this.mrpDeptUid = mrpDeptUid;
	}

	public Dept getMrpDept() {
		return mrpDept;
	}

	public void setMrpDept(Dept mrpDept) {
		this.mrpDept = mrpDept;
	}

	public String getTrackType() {
		return trackType;
	}

	public void setTrackType(String trackType) {
		this.trackType = trackType;
	}

//	public TypesData getTrackTypeDesc() {
//		return trackTypeDesc;
//	}
//
//	public void setTrackTypeDesc(TypesData trackTypeDesc) {
//		this.trackTypeDesc = trackTypeDesc;
//	}

	public String getPlanGrade() {
		return planGrade;
	}

	public void setPlanGrade(String planGrade) {
		this.planGrade = planGrade;
	}

//	public TypesData getPlanGradeDesc() {
//		return planGradeDesc;
//	}
//
//	public void setPlanGradeDesc(TypesData planGradeDesc) {
//		this.planGradeDesc = planGradeDesc;
//	}

	public String getProductPhase() {
		return productPhase;
	}

	public void setProductPhase(String productPhase) {
		this.productPhase = productPhase;
	}

//	public TypesData getProductPhaseDesc() {
//		return productPhaseDesc;
//	}
//
//	public void setProductPhaseDesc(TypesData productPhaseDesc) {
//		this.productPhaseDesc = productPhaseDesc;
//	}

	public String getCustomerName() {
		return customerName;
	}

	public void setCustomerName(String customerName) {
		this.customerName = customerName;
	}

	public Boolean getIsPhantom() {
		return isPhantom;
	}

	public void setIsPhantom(Boolean isPhantom) {
		this.isPhantom = isPhantom;
	}

	public Float getManagementCost() {
		return managementCost;
	}

	public void setManagementCost(Float managementCost) {
		this.managementCost = managementCost;
	}

	public Float getUnitCost() {
		return unitCost;
	}

	public void setUnitCost(Float unitCost) {
		this.unitCost = unitCost;
	}

	public Float getUnitPrice() {
		return unitPrice;
	}

	public void setUnitPrice(Float unitPrice) {
		this.unitPrice = unitPrice;
	}

	public Boolean getIsSellable() {
		return isSellable;
	}

	public void setIsSellable(Boolean isSellable) {
		this.isSellable = isSellable;
	}

	public Boolean getIsStock() {
		return isStock;
	}

	public void setIsStock(Boolean isStock) {
		this.isStock = isStock;
	}

	public Float getManuCycleTime() {
		return ManuCycleTime;
	}

	public void setManuCycleTime(Float manuCycleTime) {
		ManuCycleTime = manuCycleTime;
	}

	public Float getInvalidTime() {
		return invalidTime;
	}

	public void setInvalidTime(Float invalidTime) {
		this.invalidTime = invalidTime;
	}

	public Float getCheckupTime() {
		return checkupTime;
	}

	public void setCheckupTime(Float checkupTime) {
		this.checkupTime = checkupTime;
	}

	public Float getMaintenanceTime() {
		return maintenanceTime;
	}

	public void setMaintenanceTime(Float maintenanceTime) {
		this.maintenanceTime = maintenanceTime;
	}

	public String getPartABC() {
		return partABC;
	}

	public void setPartABC(String partABC) {
		this.partABC = partABC;
	}

	public Float getOrderPointQty() {
		return orderPointQty;
	}

	public void setOrderPointQty(Float orderPointQty) {
		this.orderPointQty = orderPointQty;
	}

	public Float getSafetyQty() {
		return safetyQty;
	}

	public void setSafetyQty(Float safetyQty) {
		this.safetyQty = safetyQty;
	}

	public String getIoRule() {
		return ioRule;
	}

	public void setIoRule(String ioRule) {
		this.ioRule = ioRule;
	}

	public Boolean getNeedCustomerCheck() {
		return needCustomerCheck;
	}

	public void setNeedCustomerCheck(Boolean needCustomerCheck) {
		this.needCustomerCheck = needCustomerCheck;
	}

	public String getPrepareLevel() {
		return prepareLevel;
	}

	public void setPrepareLevel(String prepareLevel) {
		this.prepareLevel = prepareLevel;
	}

	public Float getPrepareLeadTime() {
		return prepareLeadTime;
	}

	public void setPrepareLeadTime(Float prepareLeadTime) {
		this.prepareLeadTime = prepareLeadTime;
	}

	public Set<Routing> getRoutings() {
		return routings;
	}

	public void setRoutings(Set<Routing> routings) {
		this.routings = routings;
	}

	public Float getMinFixedShrinkage() {
		return minFixedShrinkage;
	}

	public void setMinFixedShrinkage(Float minFixedShrinkage) {
		this.minFixedShrinkage = minFixedShrinkage;
	}

	public Float getMinPercentShrinkage() {
		return minPercentShrinkage;
	}

	public void setMinPercentShrinkage(Float minPercentShrinkage) {
		this.minPercentShrinkage = minPercentShrinkage;
	}

	public Boolean getIsSeries() {
		return isSeries;
	}

	public void setIsSeries(Boolean isSeries) {
		this.isSeries = isSeries;
	}

	public String getSeriesPartUid() {
		return seriesPartUid;
	}

	public void setSeriesPartUid(String seriesPartUid) {
		this.seriesPartUid = seriesPartUid;
	}

	public String getConfigRule() {
		return configRule;
	}

	public void setConfigRule(String configRule) {
		this.configRule = configRule;
	}

	public String getPartClassUid() {
		return partClassUid;
	}

	public void setPartClassUid(String partClassUid) {
		this.partClassUid = partClassUid;
	}

	public Boolean getIsEffective() {
		return isEffective;
	}

	public void setIsEffective(Boolean isEffective) {
		this.isEffective = isEffective;
	}

	
	
	public Boolean getIsNeedJudge() {
		return isNeedJudge;
	}

	public void setIsNeedJudge(Boolean isNeedJudge) {
		this.isNeedJudge = isNeedJudge;
	}

	public Boolean getIsNeedData() {
		return isNeedData;
	}

	public void setIsNeedData(Boolean isNeedData) {
		this.isNeedData = isNeedData;
	}

	public Boolean getIsNeedSort() {
		return isNeedSort;
	}

	public void setIsNeedSort(Boolean isNeedSort) {
		this.isNeedSort = isNeedSort;
	}

//	public TypesData getUomDesc() {
//		return uomDesc;
//	}
//
//	public void setUomDesc(TypesData uomDesc) {
//		this.uomDesc = uomDesc;
//	}

//	public TypesData getIoRuleDesc() {
//		return ioRuleDesc;
//	}
//
//	public void setIoRuleDesc(TypesData ioRuleDesc) {
//		this.ioRuleDesc = ioRuleDesc;
//	}

//	public TypesData getPrepareLevelDesc() {
//		return prepareLevelDesc;
//	}
//
//	public void setPrepareLevelDesc(TypesData prepareLevelDesc) {
//		this.prepareLevelDesc = prepareLevelDesc;
//	}
	
	
 
	
	
	//忽略一个one-to-many字段
/*	<set name="routings" inverse="true" lazy="extra" cascade="none"
			fetch="select">
			<key>
				<column name="PART_NUMBER" 
					not-null="true" />
			</key>
			<one-to-many
				class="com.mes.basicdata.persistence.domain.Routing" />
		</set>*/
	

	}